// #include "myhead.h"
// #include "cJSON.h"

// char buf[20000] = {0};

// int MicroWeather(void)
// {
//     int tcpsock;
//     int ret;
//     char ip[20] = {0};
//     char rbuf[20000] = {0};
    
//     // ... (省略了一些初始化代码，保持其他部分不变)
//     //定义ipv4地址结构体变量
// 	struct sockaddr_in bindaddr;
// 	bzero(&bindaddr,sizeof(bindaddr));
// 	bindaddr.sin_family=AF_INET; //地址协议
// 	bindaddr.sin_addr.s_addr=htonl(INADDR_ANY);
// 	bindaddr.sin_port=htons(5548);  //客户端端口号
	
// 	//获取你要访问的http服务器ip地址
// 	//http没有加密的   https在http的基础上添加了加密层
// 	//ali-weather.showapi.com:万维易源网址地址
// 	struct hostent *p=gethostbyname("ali-weather.showapi.com"); //天气预报的网址
// 	//获取IP地址
// 	struct in_addr *q=(struct in_addr *)(*(p->h_addr_list));
// 	strcpy(ip,inet_ntoa(*q));
	
// 	//定义ipv4地址结构体变量存放服务器的ip和端口号
// 	struct sockaddr_in serveraddr;
// 	bzero(&serveraddr,sizeof(serveraddr));
// 	serveraddr.sin_family=AF_INET;
// 	serveraddr.sin_addr.s_addr=inet_addr(ip); //http服务器的ip
// 	serveraddr.sin_port=htons(80);  //http协议,端口默认就是80

//     // 创建 TCP 套接字、绑定地址等操作与原代码相同
//     tcpsock=socket(AF_INET,SOCK_STREAM,0);
// 	if(tcpsock==-1)
// 	{
// 		perror("创建tcp套接字失败了!\n");
// 		return -1;
// 	}
	
// 	//取消端口绑定限制
// 	int on=1; //非零
// 	setsockopt(tcpsock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));
	
// 	//绑定ip和端口号 --》绑定手机号
// 	ret=bind(tcpsock,(struct sockaddr *)&bindaddr,sizeof(bindaddr));
// 	if(ret==-1)
// 	{
// 		perror("绑定ip和端口号失败了!\n");
// 		return -1;
// 	}
	
// 	//连接服务器 --》拨号
// 	ret=connect(tcpsock,(struct sockaddr *)&serveraddr,sizeof(serveraddr));
// 	if(ret==-1)
// 	{
// 		perror("连接服务器失败了!\n");
// 		return -1;
// 	}
//     // 拼接字符串得到完整的 HTTP 请求
//     char *httprequest="GET /hour24?area=%E5%B9%BF%E5%B7%9E&data=20240829 HTTP/1.1\r\n"
// 					  "Host: ali-weather.showapi.com\r\n"
// 					  "Authorization: APPCODE 9e9d652a137c46b19e5cbd67b39c60c9\r\n\r\n";

//     // 发送请求并接收服务器回复
//     send(tcpsock, httprequest, strlen(httprequest), 0);
//     recv(tcpsock, rbuf, sizeof(rbuf), 0);

//     // JSON 解析和打印信息与原代码相同
//     //printf("天气预报网址给我回复: %s\n",rbuf);
// 	char *json_start = strchr(rbuf, '{');
//     if (json_start != NULL) 
// 	{
//         // 计算 '{' 之后剩余的数据长度
//         size_t remaining_length = strlen(json_start);

//         // 将 '{' 之后的内容移动到数组的开头
//         memmove(buf, json_start, remaining_length + 1); // +1 为了包括字符串结束符 '\0'
//     }

// 	//printf("天气预报网址给我回复: %s\n",buf);


//     close(tcpsock);
//     return 0;
// }

// void hqshijian()
// {
//     cJSON *data = cJSON_Parse(buf);
// 	cJSON *obj1 = cJSON_GetObjectItem(data,"showapi_res_body");
// 	cJSON *obj2 = cJSON_GetObjectItem(obj1,"hourList");
// 	cJSON *obj3 = cJSON_GetArrayItem(obj2,23);
// 	cJSON *obj4 = cJSON_GetObjectItem(obj3,"time");//获取当前日期与时间
//     printf("日期与时间:%s\n",obj4->valuestring);
// }



// void hqdiqu()
// {
//     cJSON *data = cJSON_Parse(buf);
// 	cJSON *obj1 = cJSON_GetObjectItem(data,"showapi_res_body");
// 	cJSON *obj2 = cJSON_GetObjectItem(obj1,"hourList");
// 	cJSON *obj3 = cJSON_GetArrayItem(obj2,23);
//     cJSON *obj5 = cJSON_GetObjectItem(obj3,"area");//获取城市信息
// 	printf("城市:%s \n",obj5->valuestring);
// }

// void hqtianqi()
// {
//     cJSON *data = cJSON_Parse(buf);
// 	cJSON *obj1 = cJSON_GetObjectItem(data,"showapi_res_body");
// 	cJSON *obj2 = cJSON_GetObjectItem(obj1,"hourList");
// 	cJSON *obj3 = cJSON_GetArrayItem(obj2,23);
//     cJSON *obj6 = cJSON_GetObjectItem(obj3,"weather");//获取天气
// 	printf("今日天气:%s\n",obj6->valuestring);
// }

// void hqsuentai()
// {
//     cJSON *data = cJSON_Parse(buf);
// 	cJSON *obj1 = cJSON_GetObjectItem(data,"showapi_res_body");
// 	cJSON *obj2 = cJSON_GetObjectItem(obj1,"hourList");
// 	cJSON *obj3 = cJSON_GetArrayItem(obj2,23);
//     cJSON *obj7 = cJSON_GetObjectItem(obj3,"temperature");//获取温度
// 	printf("今日温度:%s\n",obj7->valuestring);
// }

// int main()
// {
//     MicroWeather(); // 获取天气信息
//     hqshijian(); // 获取当前时间
//     hqdiqu();   // 获取城市信息
//     hqtianqi();  // 获取今日天气
//     hqsuentai();  // 获取今日温度
//     return 0;
// }